#include "c.h"
#include "assert.h"

#ifndef SCREEN_W
#define SCREEN_W 800
#endif

#ifndef SCREEN_H
#define SCREEN_H 400
#endif

extern Uint8 *screen_pixeles;

void generarFondo (Uint8 *fondo, Uint32 ancho_fondo, Uint32 alto_fondo, Uint32 primera_columna)
{
	//Alineamos el ancho del fondo a 4 bytes
	Uint32 ancho_fondo_bytes = (Uint32)(ancho_fondo * 3);
	Uint32 resto = ancho_fondo_bytes % 4;
	if(resto != 0) ancho_fondo_bytes += 4 - resto;
	assert(ancho_fondo_bytes % 4 == 0);

	Uint32 bytes_hasta_primera_columna = (Uint32)(primera_columna * 3);

	Uint8* p_fila = fondo + bytes_hasta_primera_columna;
	Uint8* p_columna;
	Uint8* p_pantalla = screen_pixeles;

	for(Uint32 fila = 0; fila < SCREEN_H; fila++)
	{
		p_columna = p_fila;
		
		for(Uint32 columna = 0; columna < SCREEN_W; columna++)
		{
			for(Uint32 pixel = 0; pixel < 3; pixel++)
			{
				*p_pantalla = *p_columna;
				
				p_pantalla++;
				p_columna++;
			}
		}

		//Alineamos el ancho de la instancia a 4 bytes
		Uint32 resto = ancho_fondo_bytes % 4;
		if(resto != 0) p_pantalla += 4 - resto;
		assert((ancho_fondo_bytes + (4 - resto)) % 4 == 0);

		p_fila+= ancho_fondo_bytes;
	}
}
